/**
 * Cookie工具函数
 * 用于处理浏览器cookie的增删改查操作
 */

/**
 * 设置cookie
 * @param {string} name - cookie的名称
 * @param {string} value - cookie的值
 * @param {number} days - cookie的过期天数，默认7天
 */
export const setCookie = (name, value, days = 7) => {
  // 创建日期对象
  const date = new Date();
  // 设置过期时间：当前时间 + 天数 * 24小时 * 60分钟 * 60秒 * 1000毫秒
  date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  // 将过期时间转换为UTC格式
  const expires = "expires=" + date.toUTCString();
  // 设置cookie，包含名称、值、过期时间和路径
  document.cookie = name + "=" + value + ";" + expires + ";path=/";
}

/**
 * 获取cookie
 * @param {string} name - 要获取的cookie名称
 * @returns {string} 返回cookie的值，如果不存在则返回空字符串
 */
export const getCookie = (name) => {
  // 构建cookie名称（包含等号）
  const cookieName = name + "=";
  // 将cookie字符串分割成数组
  const cookies = document.cookie.split(';');
  // 遍历所有cookie
  for (let i = 0; i < cookies.length; i++) {
    // 去除cookie值两端的空格
    let cookie = cookies[i].trim();
    // 如果找到匹配的cookie名称
    if (cookie.indexOf(cookieName) === 0) {
      // 返回cookie的值（去掉名称部分）
      return cookie.substring(cookieName.length, cookie.length);
    }
  }
  // 如果没有找到，返回空字符串
  return "";
}

/**
 * 删除cookie
 * @param {string} name - 要删除的cookie名称
 */
export const deleteCookie = (name) => {
  // 通过设置过期时间为过去的时间来删除cookie
  document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/";
} 